package com.mall.thread.demo1;

public class ThreadMain {

    public static void main(String[] args) {
        demo5();
    }
    //线程调用
    public static void demo1(){
        ThreadDemo mTh1=new ThreadDemo("A");
        ThreadDemo mTh2=new ThreadDemo("B");
        mTh1.start();
        mTh2.start();
    }

    //实现java.lang.Runnable接口
    public static void demo2(){
        new Thread(new RunnableDemo("C")).start();
        new Thread(new RunnableDemo("D")).start();
    }


    //join是Thread类的一个方法，启动线程后直接调用。即join()的作用是：“等待该线程终止”。
    //这里须要理解的就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码，仅仅有等到子线程结束了才干执行。
    public static void demo3(){
        System.out.println(Thread.currentThread().getName()+"主线程执行開始!");
        ThreadDemo mTh1=new ThreadDemo("A");
        ThreadDemo mTh2=new ThreadDemo("B");
        mTh1.start();
        mTh2.start();
        System.out.println(Thread.currentThread().getName()+ "主线程执行结束!");
    }

    public static void demo4(){
        System.out.println(Thread.currentThread().getName()+"主线程执行開始!");
        ThreadDemo mTh1=new ThreadDemo("A");
        ThreadDemo mTh2=new ThreadDemo("B");
        mTh1.start();
        mTh2.start();
        try {
            mTh1.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        try {
            mTh2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName()+ "主线程执行结束!");
    }
    //yield():暂停当前正在执行的线程对象，并执行其它线程。
    //Thread.yield()方法作用是：暂停当前正在执行的线程对象。并执行其它线程。
    public static void demo5(){
        ThreadYieldDemo yt1 = new ThreadYieldDemo("张三");
        ThreadYieldDemo yt2 = new ThreadYieldDemo("李四");
        yt1.start();
        yt2.start();
    }
}
